A distributed transaction is a transaction that has more than one portion to be performed by different processing entities such as computers. The portions of a distributed transaction should be atomic, that is unless each portion is performed, none should be performed. For example, transferring one hundred dollars from account A to account B can be divided into two portions: withdrawing one hundred dollars from account A and depositing one hundred dollars into account B. Neither of the two portions should be performed unless the other can be performed as well. For example, if the funds can be withdrawn from account A, but not deposited in account B, then the funds should not be withdrawn from account A. Considering that an error may occur during any portion of a distributed transaction, which may be divided into hundreds of portions, efficient and robust distributed transaction processing is desired.